class MessageEvent {
  late MessageTye _type;
  late String _message;

  MessageEvent(MessageTye type, String message) {
    this._type = type;
    this._message = message;
  }

  String get message => _message;

  String get type => _type.toString();
}

enum MessageTye { INFO, DEBUG, TRACE, EXCEPTION, ERROR }

class InfoEvent extends MessageEvent {
  InfoEvent(String message) : super(MessageTye.INFO, message);
}


class TraceEvent extends MessageEvent {
  TraceEvent(String message) : super(MessageTye.TRACE, message);
}
class DebugEvent extends MessageEvent {
  DebugEvent(String message) : super(MessageTye.DEBUG, message);
}
class ErrorEvent extends MessageEvent {
  ErrorEvent(String message) : super(MessageTye.ERROR, message);
}